import _ from 'lodash'; import dynamic from 'next/dynamic'; import { useRouter } from 'next/router'; import Seo from '@/core/components/Seo'; import { getIdFromSlug, getNameFromSlug } from '@/core/utils/slug'; import Breadcrumb from '../../../lib/lob/components/Breadcrumb'; import { useEffect, useState } from 'react'; import odooApi from '@/core/api/odooApi'; import { div } from 'lodash-contrib'; const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout')); const ProductSearch = dynamic(() => import('@/lib/product/components/ProductSearch')); const CategorySection = dynamic(() => import('@/lib/product/components/CategorySection')); export default function CategoryDetail() { const router = useRouter(); const { slug = '', page = 1 } = router.query; const [dataLob, setDataLob] = useState([]); const [finalQuery, setFinalQuery] = useState({}); const [dataCategoriesProduct, setDataCategoriesProduct] = useState([]) const [data, setData] = useState([]) const dataIdCategories = [] const categoryName = getNameFromSlug(slug); const lobId = getIdFromSlug(slug); const q = router?.query.q || null; const query = { fq: `id:${lobId}`, page, }; if (q) { query.q = q; } useEffect(() => { const fetchCategoryData = async () => { try { const lobData = await odooApi('GET', `/api/v1/lob_homepage?lob_id=${lobId}`); setDataLob(lobData); } catch (error) { console.error("Error fetching category data:", error); } }; fetchCategoryData(); }, [lobId]); const collectIdsCategory = (category) => { const ids = []; function recurse(cat) { if (cat && cat.id) { ids.push(cat.id); } if (Array.isArray(cat.children)) { cat.children.forEach(recurse); } } recurse(category); return ids; }; useEffect(() => { const fetchCategoryData = async () => { if (dataLob[0]?.categoryIds) { for (const category of dataLob[0].categoryIds) { const getCategoriesId = await odooApi('GET', `/api/v1/category/numFound?parent_id=${category.id}`); if (getCategoriesId) { setDataCategoriesProduct(getCategoriesId); const ids = collectIdsCategory(getCategoriesId); dataIdCategories.push(ids) } } setData(dataIdCategories) } }; fetchCategoryData(); const mergedArray = data.flat(); const newQuery = { fq: `category_id_ids:(${mergedArray.join(' OR ')})`, }; setFinalQuery(newQuery); }, [dataLob, ]); return (
{dataLob[0]?.categoryIds && (
)}
{!_.isEmpty(router.query) && ( )}
); }